<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    // 封装一个定时打印数字的函数
    function printNum(num, timer) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve(num)
            }, timer)
        })
    }
    // 让异步代码书写同步化
    // 主要修饰函数，告知当前函数内有异步操作，async修饰的函数，默认返回promise
    // async:
    //         - 主要修饰函数，告知当前函数内有异步操作
    //         - async修饰的函数，默认返回promise
    async function syncPrintNum() {
        // await:
        //     - 主要修饰promise
        //     - awiat【必须】在async修饰的函数内使用
        //     - await修饰promise，可以直接得到promise的resolve结果
        //     - async函数中，await修饰promise的时候，后面的代码，必须等待promise执行结束后才能继续执行
        const num1 = await printNum(10, 1000)
        const num2 = await printNum(20, 4000)
        const num3 = await printNum(30, 3000)
        const num4 = await printNum(40, 2000)

        console.log(num1, num2, num3,num4)
    }
    // 调用
    syncPrintNum()

</script>